gRPC使用TLS介绍。
maven的POM设置见gRPC简介
不使用TLS
不使用TLS的话,服务器端只要创建好server就行了:
1 | server = NettyServerBuilder.forPort(port) |
客户端创建channel和stub,
1 | channel = NettyChannelBuilder.forAddress(host, port) |
然后运行mvn clean compile
和mvn exec:java -Dexec.mainClass="com.taobao.user.UserServiceServer"
启动服务器.
运行mvn exec:java -Dexec.mainClass="com.taobao.user.UserServiceClient"
运行客户端.
使用TLS
使用TLS,需要证书,这里使用了gRPC的interop-testing模块下的例子中的证书.
服务器端的channel创建比之前不使用TLS的时候要复杂一些.
1 | SslContext sslContext = GrpcSslContexts.forServer(Util.loadCert("server1.pem"), Util.loadCert("server1.key")).build(); |
客户端的代码如下:
1 | SslContext sslContext; |
运行
1 | mvn exec:exec --Dexec.executable="java" -Dexec.args=" -Xbootclasspath/p:D:/maven_lib/org/mortbay/jetty/alpn/alpn-boot/8.1.3.v20150130/alpn-boot-8.1.3.v20150130.jar -cp %classpath com.taobao.user.UserServiceServer" |
来启动服务器.
运行
1 | mvn exec:exec -Dexec.executable="java" -Dexec.args=" -Xbootclasspath/p:D:/maven_lib/org/mortbay/jetty/alpn/alpn-boot/8.1.3.v20150130/alpn-boot-8.1.3.v20150130.jar -cp %classpath com.taobao.user.UserServiceClient" |
来运行客户端.
由于Java没有对ALPN的内置支持,所以需要使用外面扩展来使用ALPN,这里使用jetty-ALPN
来扩展.所有在启动的使用要加上这样的参数:
1 | -Xbootclasspath/p:D:/maven_lib/org/mortbay/jetty/alpn/alpn-boot/8.1.3.v20150130/alpn-boot-8.1.3.v20150130.jar |